package ru.kurganec.ifmo.netland.event;

import java.util.Vector;

/**
 * Created by IntelliJ IDEA.
 * User: oo
 * Date: 12.07.11
 * Time: 22:07
 */
public abstract class NetlandCommandProducer {
    // ===========================================================
    // Constants
    // ===========================================================

    // ===========================================================
    // Fields
    // ===========================================================
    private Vector<NetlandCommandListener> listeners = new Vector<NetlandCommandListener>();
    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================

    // ===========================================================
    // Methods
    // ===========================================================
    public void addCommandListener(NetlandCommandListener listener) {
        listeners.add(listener);
    }

    public NetlandCommandListener[] getCommandListeners() {
        return listeners.toArray(new NetlandCommandListener[listeners.size()]);
    }

    public void removeCommandListener(NetlandCommandListener listener) {
        listeners.remove(listener);
    }

    protected void fireCommandReceived(String message) {
        NetlandCommand ev = new NetlandCommand(this, message);
        for (NetlandCommandListener listener : listeners)
            listener.commandReceived(ev);
    }

    protected void fireReceiverConnected(String message) {
        NetlandCommand command = new NetlandCommand(this, message);
        for (NetlandCommandListener listener : listeners) {
            listener.receiverConnected(command);
        }
    }
    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================


}
